package com.xhs.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 小红书搜索结果响应DTO
 *
 * @author xhs
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class XhsSearchResponse extends XhsApiResponse<XhsSearchResponse.DataInfo> {

    /**
     * 数据信息
     */
    @Data
    public static class DataInfo {
        /**
         * 是否有更多数据
         */
        private Boolean has_more;

        /**
         * 搜索结果项列表
         */
        private List<ItemInfo> items;
    }

    /**
     * 搜索结果项信息
     */
    @Data
    public static class ItemInfo {
        /**
         * 项目ID
         */
        private String id;

        /**
         * 模型类型
         */
        private String model_type;

        /**
         * 笔记卡片信息
         */
        private NoteCard note_card;

        /**
         * 推荐查询信息（用于相关搜索）
         */
        private RecQuery rec_query;

        /**
         * 安全令牌
         */
        private String xsec_token;
    }

    /**
     * 笔记卡片信息
     */
    @Data
    public static class NoteCard {
        /**
         * 卡片类型
         */
        private String type;

        /**
         * 显示标题
         */
        private String display_title;

        /**
         * 用户信息
         */
        private UserInfo user;

        /**
         * 互动信息
         */
        private InteractInfo interact_info;

        /**
         * 封面信息
         */
        private CoverInfo cover;

        /**
         * 图片列表
         */
        private List<ImageInfo> image_list;

        /**
         * 角标信息
         */
        private List<CornerTagInfo> corner_tag_info;
    }

    /**
     * 用户信息
     */
    @Data
    public static class UserInfo {
        /**
         * 用户昵称
         */
        private String nick_name;

        /**
         * 用户头像
         */
        private String avatar;

        /**
         * 用户ID
         */
        private String user_id;

        /**
         * 用户昵称（另一个字段）
         */
        private String nickname;

        /**
         * 安全令牌
         */
        private String xsec_token;
    }

    /**
     * 互动信息
     */
    @Data
    public static class InteractInfo {
        /**
         * 是否点赞
         */
        private Boolean liked;

        /**
         * 点赞数
         */
        private String liked_count;

        /**
         * 是否收藏
         */
        private Boolean collected;

        /**
         * 收藏数
         */
        private String collected_count;

        /**
         * 评论数
         */
        private String comment_count;

        /**
         * 分享数
         */
        private String shared_count;
    }

    /**
     * 封面信息
     */
    @Data
    public static class CoverInfo {
        /**
         * 高度
         */
        private Integer height;

        /**
         * 宽度
         */
        private Integer width;

        /**
         * 默认URL
         */
        private String url_default;

        /**
         * 预览URL
         */
        private String url_pre;
    }

    /**
     * 图片信息
     */
    @Data
    public static class ImageInfo {
        /**
         * 高度
         */
        private Integer height;

        /**
         * 宽度
         */
        private Integer width;

        /**
         * 图片详情列表
         */
        private List<ImageDetailInfo> info_list;
    }

    /**
     * 图片详情信息
     */
    @Data
    public static class ImageDetailInfo {
        /**
         * 图片场景
         */
        private String image_scene;

        /**
         * 图片URL
         */
        private String url;
    }

    /**
     * 角标信息
     */
    @Data
    public static class CornerTagInfo {
        /**
         * 角标类型
         */
        private String type;

        /**
         * 角标文本
         */
        private String text;
    }

    /**
     * 推荐查询信息
     */
    @Data
    public static class RecQuery {
        /**
         * 标题
         */
        private String title;

        /**
         * 来源
         */
        private Integer source;

        /**
         * 查询请求ID
         */
        private String word_request_id;

        /**
         * 查询列表
         */
        private List<QueryInfo> queries;
    }

    /**
     * 查询信息
     */
    @Data
    public static class QueryInfo {
        /**
         * 查询ID
         */
        private String id;

        /**
         * 查询名称
         */
        private String name;

        /**
         * 搜索词
         */
        private String search_word;
    }
} 